<?php

class dbmanager {

    private $dbname, $usrname, $passwrd, $host, $port, $dbh;

    /**
     * Konstruktor prywatny.
     * @param <type> $conn - pozwala wybrać nr połączenia do bd
     */
    protected function __construct($conn) {
        $this->host = "localhost";
        $this->port = "5432";

        if ($conn == 1) {
            $this->dbname = "ewidencja";
            $this->usrname = "ewidencja";
            $this->passwrd = "1234zxcv";
        } else {
            $this->dbname = "rpg";
            $this->usrname = "postgres";
            $this->passwrd = "root";
        }

        $this->dbh = pg_connect("host=$this->host port=$this->port dbname=$this->dbname
                user=$this->usrname password=$this->passwrd");

        if (!$this->dbh) {
            die("Error in connection: " . pg_last_error());
        }
    }

    public function singleton() {
        static $instance;
        if (!isset($instance)) {
            $instance = new dbmanager(0);
        }
        return $instance;
    }

    /**
     * Wykonuje zapytanie na bazie.
     * @param <type> $query - zapytanie
     * @return <type> wynik zapytania jako tablicę wierszy z db
     */
    public function execute_query($query) {
        // taka konstrukcja zapobiegnie sql injection
        return pg_query($this->dbh, $query);
    }

    /**
     * Wykonuje zapytanie na bazie.
     * @param <type> $query - zapytanie
     * @return <type> wynik zapytania jako tablicę wierszy z db
     */
    public function execute_query_json($query) {
        // taka konstrukcja zapobiegnie sql injection
        $res = $this->execute_query($query) or die(pg_last_error());
        while ($aRow = pg_fetch_array($res)) {
            $output[] = $aRow;
        }

        return json_encode($output);
    }

}

?>
